Durante il primo l'assemblatore costruisce due tabelle: la Tabella delle Costanti, contenente le costanti globali e i nomi simbolici dei sottoprogrammi e la Tabella dei Simboli, contenente i valori dei simboli.
Nell'assegnare un valore ad un simbolo nel campo etichetta di una istruzione, l'assemblatore deve sapere quale indirizzo avrà quella istruzione in fase di esecuzione. Per tener traccia di tale indirizzo, l'assemblatore mantiene una variabile durante l'assemblaggio, nota come contatore della locazione dell'istruzione o ILC. Questa variabile è inizializzata a zero all'inizio della prima passata ed incrementata della lunghezza dell'istruzione per ogni istruzione elaborata.
Per determinare la lunghezza di una istruzione l'assemblatore usa la Tabella degli Opcode, che contiene almeno un elemento per ogni codice operativo simbolico (mnemonico) del linguaggio Assembly IJVM.
In pratica, poiché l'area del codice eseguibile è una successione di byte, le istruzioni Assembly IJVM si codificano in byte (uno, due, tre o più byte a seconda dell'istruzione).
Il primo byte codifica sempre il codice operativo.
Gli identificatori delle variabili vengono codificati in un byte.
Gli identificatori delle costanti, dei metodi e delle etichette vengono codificati in due byte.